// Copyright (C) 2018-2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#include "op_fuzzy.hpp"

#include <fstream>

#include "common_test_utils/test_control.hpp"
#include "paddle_utils.hpp"

using namespace ov::frontend;

using PaddleFuzzyOpTest = FrontEndFuzzyOpTest;

static const std::vector<std::string> models{
    std::string("argmax"),
    std::string("argmax1"),
    std::string("assign_none/assign_none.pdmodel"),
    std::string("assign_output/assign_output.pdmodel"),
    std::string("assign_value_boolean"),
    std::string("assign_value_fp32"),
    std::string("assign_value_int32"),
    std::string("assign_value_int64"),
    std::string("avgAdaptivePool2D_test1"),
    std::string("avgPool_test1"),
    std::string("avgPool_test10"),
    std::string("avgPool_test11"),
    std::string("avgPool_test2"),
    std::string("avgPool_test3"),
    std::string("avgPool_test4"),
    std::string("avgPool_test5"),
    // avgPool_test6<nchw support is disabled now>,
    std::string("avgPool_test7"),
    std::string("avgPool_test8"),
    std::string("avgPool_test9"),
    std::string("avgAdaptivePool3D_test1"),
    std::string("avgAdaptivePool3D_test2"),
    std::string("avgAdaptivePool3D_test3"),
    std::string("avgAdaptivePool3D_test4"),
    std::string("avg3dPool_test1"),
    std::string("avg3dPool_test2"),
    std::string("avg3dPool_test3"),
    std::string("avg3dPool_test4"),
    std::string("avg3dPool_test5"),
    std::string("avg3dPool_test6"),
    std::string("avg3dPool_test7"),
    std::string("avg3dPool_test8"),
    std::string("avg3dPool_test9"),
    std::string("avg3dPool_test10"),
    std::string("batch_norm_nchw/batch_norm_nchw.pdmodel"),
    std::string("batch_norm_nhwc/batch_norm_nhwc.pdmodel"),
    std::string("bicubic_downsample_false_0/bicubic_downsample_false_0.pdmodel"),
    std::string("bicubic_downsample_false_1/bicubic_downsample_false_1.pdmodel"),
    std::string("bicubic_downsample_true_0/bicubic_downsample_true_0.pdmodel"),
    std::string("bicubic_upsample_false_0/bicubic_upsample_false_0.pdmodel"),
    std::string("bicubic_upsample_false_1/bicubic_upsample_false_1.pdmodel"),
    std::string("bicubic_upsample_scales/bicubic_upsample_scales.pdmodel"),
    std::string("bicubic_upsample_scales2/bicubic_upsample_scales2.pdmodel"),
    std::string("bicubic_upsample_true_0/bicubic_upsample_true_0.pdmodel"),
    std::string("bilinear_downsample_false_0/bilinear_downsample_false_0.pdmodel"),
    std::string("bilinear_downsample_false_1/bilinear_downsample_false_1.pdmodel"),
    std::string("bilinear_downsample_true_0/bilinear_downsample_true_0.pdmodel"),
    std::string("bilinear_upsample_false_0/bilinear_upsample_false_0.pdmodel"),
    std::string("bilinear_upsample_false_1/bilinear_upsample_false_1.pdmodel"),
    std::string("bilinear_upsample_scales/bilinear_upsample_scales.pdmodel"),
    std::string("bilinear_upsample_scales2/bilinear_upsample_scales2.pdmodel"),
    std::string("bilinear_upsample_true_0/bilinear_upsample_true_0.pdmodel"),
    std::string("bmm/bmm.pdmodel"),
    std::string("box_coder_1"),
    std::string("box_coder_2"),
    std::string("box_coder_3"),
    std::string("ceil"),
    std::string("clip"),
    // 95436: sporadic failure
    // could not support dynamic rank
    // std::string("conditional_block_const/conditional_block_const.pdmodel"),
    // std::string("conditional_block_const_2outputs/conditional_block_const_2outputs.pdmodel"),
    std::string("conditional_block_2inputs/conditional_block_2inputs.pdmodel"),
    std::string("conditional_block_2inputs_2outputs/conditional_block_2inputs_2outputs.pdmodel"),
    std::string("conditional_block_2inputs_dyn/conditional_block_2inputs_dyn.pdmodel"),
    std::string("conditional_block_2inputs_dyn_2outputs/conditional_block_2inputs_dyn_2outputs.pdmodel"),
    std::string("conditional_block_dyn_multiple_consumers/conditional_block_dyn_multiple_consumers.pdmodel"),
    std::string("conditional_block_dyn_multiple_blocks/conditional_block_dyn_multiple_blocks.pdmodel"),
    std::string("conditional_block_dyn_multiple_blocks2/conditional_block_dyn_multiple_blocks2.pdmodel"),
    //// TensorArray case
    //// Save model failed if update paddlepaddle to 2.4.0
    // std::string("conditional_block_concat/conditional_block_concat.pdmodel"),
    // std::string("conditional_block_concat_dyn/conditional_block_concat_dyn.pdmodel"),
    // std::string("conditional_block_concat_dyn_2axes/conditional_block_concat_dyn_2axes.pdmodel"),
    // std::string("conditional_block_conditional_block_concat/conditional_block_conditional_block_concat.pdmodel"),
    // std::string(
    //    "conditional_block_conditional_block_concat_dyn/conditional_block_conditional_block_concat_dyn.pdmodel"),
    // std::string("conditional_block_slice0/conditional_block_slice0.pdmodel"),
    // std::string("conditional_block_slice0_dyn/conditional_block_slice0_dyn.pdmodel"),
    // std::string("conditional_block_slice0_else/conditional_block_slice0_else.pdmodel"),
    // std::string("conditional_block_slice0_scaler/conditional_block_slice0_scaler.pdmodel"),
    // std::string("conditional_block_slice0_scaler_dyn/conditional_block_slice0_scaler_dyn.pdmodel"),
    //// std::string("conditional_block_slice0_axis2/conditional_block_slice0_axis2.pdmodel"),   // No such case in
    //// model, as paddle.concat always concat along axis 0.
    //// std::string("conditional_block_slice0_axis2_dyn/conditional_block_slice0_axis2_dyn.pdmodel"),
    //// std::string("conditional_block_slice0_axis1_axis2/conditional_block_slice0_axis1_axis2.pdmodel"),
    //// std::string("conditional_block_slice0_axis1_axis2_dyn/conditional_block_slice0_axis1_axis2_dyn.pdmodel"),
    // std::string("conditional_block_concat_false/conditional_block_concat_false.pdmodel"),
    // std::string("conditional_block_concat_false_dyn/conditional_block_concat_false_dyn.pdmodel"),
    // std::string("conditional_block_slice0_2tensorarrays/conditional_block_slice0_2tensorarrays.pdmodel"),
    // std::string("conditional_block_slice0_2tensorarrays_dyn/conditional_block_slice0_2tensorarrays_dyn.pdmodel"),
    // std::string("conditional_block_slice0_2tensorarrays_extra/conditional_block_slice0_2tensorarrays_extra.pdmodel"),
    // std::string(
    //    "conditional_block_slice0_2tensorarrays_extra_dyn/conditional_block_slice0_2tensorarrays_extra_dyn.pdmodel"),
    std::string("conv2d_dilation_assymetric_pads_strides/conv2d_dilation_assymetric_pads_strides.pdmodel"),
    std::string("conv2d_SAME_padding/conv2d_SAME_padding.pdmodel"),
    std::string("conv2d_strides_assymetric_padding/conv2d_strides_assymetric_padding.pdmodel"),
    std::string("conv2d_strides_no_padding/conv2d_strides_no_padding.pdmodel"),
    std::string("conv2d_strides_padding/conv2d_strides_padding.pdmodel"),
    std::string(
        "conv2d_transpose_dilation_assymetric_pads_strides/conv2d_transpose_dilation_assymetric_pads_strides.pdmodel"),
    // conv2d_transpose_SAME_padding(Paddle outputs wrong results),
    std::string("conv2d_transpose_strides_assymetric_padding/conv2d_transpose_strides_assymetric_padding.pdmodel"),
    std::string("conv2d_transpose_strides_no_padding/conv2d_transpose_strides_no_padding.pdmodel"),
    std::string("conv2d_transpose_strides_padding/conv2d_transpose_strides_padding.pdmodel"),
    std::string("conv2d_transpose_VALID_padding/conv2d_transpose_VALID_padding.pdmodel"),
    std::string("conv2d_VALID_padding/conv2d_VALID_padding.pdmodel"),
    std::string("cos"),
    std::string("cumsum"),
    std::string("cumsum_i32"),
    std::string("cumsum_i64"),
    std::string("cumsum_f32"),
    std::string("cumsum_f64"),
    std::string("deformable_conv_default"),
    std::string("deformable_conv_with_bias"),
    std::string("deformable_conv_with_deformable_groups"),
    std::string("deformable_conv_with_dilation"),
    std::string("deformable_conv_with_dilation_list"),
    std::string("deformable_conv_with_dilation_tuple"),
    std::string("deformable_conv_with_groups"),
    // (CVS-86585: about e-5 level accuracy diff)
    // std::string("deformable_conv_with_mask"),
    // std::string("deformable_conv_with_mask_bias"),
    std::string("deformable_conv_with_pad"),
    std::string("deformable_conv_with_pad_list"),
    std::string("deformable_conv_with_pad_tuple"),
    std::string("deformable_conv_with_stride"),
    std::string("deformable_conv_with_stride_list"),
    std::string("deformable_conv_with_stride_tuple"),
    std::string("depthwise_conv2d_convolution/depthwise_conv2d_convolution.pdmodel"),
    std::string("depthwise_conv2d_transpose_convolution/depthwise_conv2d_transpose_convolution.pdmodel"),
    std::string("dropout"),
    std::string("dropout_upscale_in_train"),
    std::string("elementwise_add1"),
    std::string("elementwise_div1"),
    std::string("elementwise_max1"),
    std::string("elementwise_min1"),
    std::string("elementwise_mod1"),
    std::string("elementwise_mul1"),
    std::string("elementwise_pow1"),
    std::string("elementwise_sub1"),
    std::string("elementwise_add2"),
    std::string("elementwise_div2"),
    std::string("elementwise_max2"),
    std::string("elementwise_min2"),
    std::string("elementwise_mod2"),
    std::string("elementwise_mul2"),
    std::string("elementwise_pow2"),
    std::string("elementwise_sub2"),
    std::string("elementwise_add3"),
    std::string("elementwise_div3"),
    std::string("elementwise_max3"),
    std::string("elementwise_min3"),
    std::string("elementwise_mod3"),
    std::string("elementwise_mul3"),
    std::string("elementwise_pow3"),
    std::string("elementwise_sub3"),
    std::string("elementwise_add4"),
    std::string("elementwise_div4"),
    std::string("elementwise_max4"),
    std::string("elementwise_min4"),
    std::string("elementwise_mod4"),
    std::string("elementwise_mul4"),
    std::string("elementwise_pow4"),
    std::string("elementwise_sub4"),
    std::string("elementwise_floordiv_int32_1"),
    std::string("elementwise_floordiv_int32_2"),
    std::string("elementwise_floordiv_int32_3"),
    std::string("elementwise_floordiv_int64_1"),
    std::string("elementwise_floordiv_int64_2"),
    std::string("elementwise_floordiv_int64_3"),
    std::string("elementwise_mul_bool1"),
    std::string("embedding_0/embedding_0.pdmodel"),
    std::string("embedding_sparse/embedding_sparse.pdmodel"),
    std::string("embedding_none_weight/embedding_none_weight.pdmodel"),
    std::string("embedding_paddings/embedding_paddings.pdmodel"),
    std::string("embedding_paddings_neg1/embedding_paddings_neg1.pdmodel"),
    std::string("embedding_tensorIds/embedding_tensorIds.pdmodel"),
    std::string("embedding_tensorIds_paddings/embedding_tensorIds_paddings.pdmodel"),
    std::string("equal"),
    std::string("expand_v2"),
    std::string("expand_v2_tensor"),
    std::string("expand_v2_tensor_list"),
    std::string("expand_v2_tensor_list2"),
    std::string("exp_test_float32"),
    std::string("flip_1"),
    std::string("flip_2"),
    std::string("flip_3"),
    std::string("flip_4"),
    std::string("flip_5"),
    std::string("flip_dynamic_1"),
    std::string("flip_dynamic_2"),
    std::string("full_like"),
    std::string("full_like_f16"),
    std::string("full_like_f32"),
    std::string("full_like_f64"),
    std::string("full_like_i16"),
    std::string("full_like_i32"),
    std::string("full_like_i64"),
    std::string("full_like_bool"),
    std::string("full_like_bool_2"),
    std::string("full"),
    std::string("full_int32"),
    std::string("full_int64"),
    std::string("full_tensor"),
    std::string("full_shape_tensor"),
    std::string("full_shape_tensor_list"),
    std::string("flatten_contiguous_range_test1"),
    std::string("floor_float32"),
    std::string("floor_mod1"),
    std::string("floor_mod2"),
    std::string("gather_multi_dimension"),
    std::string("gather_one_dimension"),
    std::string("gather_one_dimension2"),
    // gather_axis_input
    // (CVS-82724: not support Axis as input),
    std::string("gather_nd_float32"),
    std::string("gather_nd_int64"),
    std::string("gather_nd_int32"),
    // Not support indices zero rank
    // std::string("gather_nd_empty"),
    std::string("gather_nd_low_index"),
    std::string("gather_nd_high_rank1"),
    std::string("gather_nd_high_rank2"),
    std::string("gelu_erf"),
    std::string("gelu_tanh"),
    std::string("generate_proposals_v2_0"),
    std::string("generate_proposals_v2_1"),
    std::string("generate_proposals_v2_2"),
    std::string("generate_proposals_v2_3"),
    std::string("generate_proposals_v2_4"),
    // ticket 130605: actual res value is not close
    // std::string("generate_proposals_v2_5"),
    std::string("generate_proposals_v2_6"),
    // greater_equal_big_int64(failure due to CPU inference),
    std::string("greater_equal_big_int64"),
    std::string("greater_equal_float32"),
    std::string("greater_equal_int32"),
    std::string("greater_equal_int64"),
    std::string("greater_than_float32"),
    std::string("greater_than_int32"),
    std::string("greater_than_int64"),
    std::string("grid_sampler_1"),
    std::string("grid_sampler_2"),
    // std::string("grid_sampler_3"),
    // std::string("grid_sampler_dyn"),
    std::string("group_norm_1/group_norm_1.pdmodel"),
    std::string("group_norm_2/group_norm_2.pdmodel"),
    std::string("group_norm_3/group_norm_3.pdmodel"),
    std::string("hard_sigmoid"),
    std::string("hard_swish"),
    std::string("index_select_axis_0"),
    std::string("index_select_axis_1"),
    std::string("index_select_axis_native_-1"),
    std::string("index_select_axis_native_-2"),
    std::string("layer_norm/layer_norm.pdmodel"),
    std::string("layer_norm_noall/layer_norm_noall.pdmodel"),
    std::string("layer_norm_noscale/layer_norm_noscale.pdmodel"),
    std::string("layer_norm_noshift/layer_norm_noshift.pdmodel"),
    std::string("leaky_relu"),
    std::string("less_than_float32"),
    std::string("less_than_int32"),
    std::string("less_than_int64"),
    std::string("linear_downsample_false_0/linear_downsample_false_0.pdmodel"),
    std::string("linear_downsample_false_1/linear_downsample_false_1.pdmodel"),
    std::string("linear_downsample_true_0/linear_downsample_true_0.pdmodel"),
    std::string("linear_upsample_false_0/linear_upsample_false_0.pdmodel"),
    std::string("linear_upsample_false_1/linear_upsample_false_1.pdmodel"),
    std::string("linear_upsample_scales/linear_upsample_scales.pdmodel"),
    std::string("linear_upsample_scales2/linear_upsample_scales2.pdmodel"),
    std::string("linear_upsample_true_0/linear_upsample_true_0.pdmodel"),
    std::string("linspace_1"),
    std::string("linspace_2"),
    std::string("linspace_3"),
    std::string("log"),
    std::string("logical_and"),
    std::string("logical_not"),
    std::string("logical_or"),
    std::string("logical_xor"),
    // 95436: sporadic failure
    std::string("loop/loop.pdmodel"),
    std::string("loop_dyn/loop_dyn.pdmodel"),
    std::string("loop_dyn_x/loop_dyn_x.pdmodel"),
    // std::string("loop_if/loop_if.pdmodel"),
    // std::string("loop_if_loop/loop_if_loop.pdmodel"),
    // std::string("loop_if_loop_if/loop_if_loop_if.pdmodel"),
    // std::string("loop_if_loop_complex/loop_if_loop_complex.pdmodel"),
    // disabed due to slice could not produce full dynamic shape
    // std::string("loop_if_tensor_array/loop_if_tensor_array.pdmodel"),
    // std::string("loop_x/loop_x.pdmodel"),
    std::string("loop_t/loop_t.pdmodel"),
    std::string("loop_tensor_array/loop_tensor_array.pdmodel"),
    std::string("matmul_xt/matmul_xt.pdmodel"),
    std::string("matmul_xt_yt/matmul_xt_yt.pdmodel"),
    std::string("matmul_yt/matmul_yt.pdmodel"),
    std::string("matmul_v2_1dx1d/matmul_v2_1dx1d.pdmodel"),
    std::string("matmul_v2_1dx2d/matmul_v2_1dx2d.pdmodel"),
    std::string("matmul_v2_2dx1d/matmul_v2_2dx1d.pdmodel"),
    std::string("matmul_v2_ndxmd/matmul_v2_ndxmd.pdmodel"),
    std::string("matmul_v2_xt/matmul_v2_xt.pdmodel"),
    std::string("matmul_v2_xt_yt/matmul_v2_xt_yt.pdmodel"),
    std::string("matmul_v2_yt/matmul_v2_yt.pdmodel"),
    std::string("matrix_nms_by_background"),
    std::string("matrix_nms_by_keep_top_k"),
    std::string("matrix_nms_by_nms_top_k"),
    std::string("matrix_nms_by_post_threshold"),
    std::string("matrix_nms_flipped_coordinates"),
    std::string("matrix_nms_gaussian"),
    std::string("matrix_nms_gaussian_sigma"),
    std::string("matrix_nms_identical_boxes"),
    std::string("matrix_nms_not_normalized"),
    std::string("matrix_nms_not_return_indexed"),
    std::string("matrix_nms_not_return_rois_num"),
    std::string("matrix_nms_not_return_rois_num_neither_index"),
    std::string("matrix_nms_one_batch"),
    std::string("matrix_nms_single_box"),
    std::string("matrix_nms_two_batches_two_classes"),
    // std::string("matrix_nms_normalized_random"),
    // std::string("matrix_nms_not_normalized_random"),
    std::string("maxAdaptivePool2D_test1"),
    std::string("maxPool_test1"),
    std::string("maxPool_test10"),
    std::string("maxPool_test11"),
    std::string("maxPool_test2"),
    std::string("maxPool_test3"),
    std::string("maxPool_test4"),
    std::string("maxPool_test5"),
    // maxPool_test6(nchw support is disabled now),
    std::string("maxPool_test7"),
    std::string("maxPool_test8"),
    std::string("maxPool_test9"),
    std::string("maxAdaptivePool3D_test1"),
    std::string("maxAdaptivePool3D_test2"),
    std::string("maxAdaptivePool3D_test3"),
    std::string("maxAdaptivePool3D_test4"),
    std::string("max3dPool_test1"),
    std::string("max3dPool_test2"),
    std::string("max3dPool_test3"),
    std::string("max3dPool_test4"),
    std::string("max3dPool_test5"),
    std::string("max3dPool_test6"),
    std::string("max3dPool_test7"),
    std::string("max3dPool_test8"),
    std::string("max3dPool_test9"),
    std::string("max3dPool_test10"),
    std::string("max3dRetureMask"),
    std::string("meshgrid/meshgrid.pdmodel"),
    std::string("multiclass_nms_by_background"),
    std::string("multiclass_nms_by_class_id"),
    std::string("multiclass_nms_by_IOU"),
    std::string("multiclass_nms_by_IOU_and_scores"),
    std::string("multiclass_nms_by_keep_top_k"),
    std::string("multiclass_nms_by_nms_eta"),
    std::string("multiclass_nms_by_nms_top_k"),
    std::string("multiclass_nms_flipped_coordinates"),
    std::string("multiclass_nms_identical_boxes"),
    // default
    std::string("multiclass_nms_lod_roisnum_multiple_images_default"),
    std::string("multiclass_nms_lod_roisnum_multiple_images_0_default"),
    std::string("multiclass_nms_lod_roisnum_single_image_default"),
    // background
    std::string("multiclass_nms_lod_roisnum_multiple_images_background"),
    std::string("multiclass_nms_lod_roisnum_multiple_images_0_background"),
    std::string("multiclass_nms_lod_roisnum_single_image_background"),
    // score_threshold
    std::string("multiclass_nms_lod_roisnum_multiple_images_score_threshold"),
    std::string("multiclass_nms_lod_roisnum_multiple_images_0_score_threshold"),
    std::string("multiclass_nms_lod_roisnum_single_image_score_threshold"),
    // nms_top_k
    std::string("multiclass_nms_lod_roisnum_multiple_images_nms_top_k"),
    std::string("multiclass_nms_lod_roisnum_multiple_images_0_nms_top_k"),
    std::string("multiclass_nms_lod_roisnum_single_image_nms_top_k"),
    // keep_top_k
    std::string("multiclass_nms_lod_roisnum_multiple_images_keep_top_k"),
    std::string("multiclass_nms_lod_roisnum_multiple_images_0_keep_top_k"),
    std::string("multiclass_nms_lod_roisnum_single_image_keep_top_k"),
    // normalized
    std::string("multiclass_nms_lod_roisnum_multiple_images_normalized"),
    std::string("multiclass_nms_lod_roisnum_multiple_images_0_normalized"),
    std::string("multiclass_nms_lod_roisnum_single_image_normalized"),
    std::string("multiclass_nms_not_normalized"),
    std::string("multiclass_nms_not_return_indexed"),
    std::string("multiclass_nms_single_box"),
    std::string("multiclass_nms_two_batches_two_classes_by_class_id"),
    // std::string("multiclass_nms_normalized_random"),
    // std::string("multiclass_nms_not_normalized_random"),
    std::string("nearest_downsample_false_0/nearest_downsample_false_0.pdmodel"),
    std::string("nearest_downsample_false_1/nearest_downsample_false_1.pdmodel"),
    std::string("nearest_upsample_false_0/nearest_upsample_false_0.pdmodel"),
    std::string("nearest_upsample_false_1/nearest_upsample_false_1.pdmodel"),
    std::string("not_equal_float32"),
    std::string("not_equal_int32"),
    std::string("not_equal_int64"),
    std::string("one_hot_v2_1"),
    std::string("one_hot_v2_2"),
    std::string("one_hot_v2_3"),
    std::string("p_norm1"),
    std::string("p_norm2"),
    std::string("p_norm3"),
    std::string("p_norm4"),
    std::string("p_norm5"),
    std::string("p_norm6"),
    std::string("p_norm7"),
    std::string("p_norm8"),
    std::string("pad3d_test1"),
    std::string("pad3d_test2"),
    std::string("pad3d_test3"),
    std::string("partial_concat_1"),
    std::string("partial_concat_2"),
    std::string("partial_concat_3"),
    std::string("partial_sum_1"),
    std::string("partial_sum_2"),
    std::string("partial_sum_3"),
    // pad3d_test4,
    std::string("pow_float32"),
    std::string("pow_int32"),
    std::string("pow_int64"),
    // pow_int64_out_of_range(out of range of OV int64),
    std::string("pow_y_tensor"),
    std::string("prior_box_attrs_mmar_order_true"),
    std::string("prior_box_default"),
    std::string("prior_box_flip_clip_false"),
    std::string("prior_box_max_sizes_none"),
    std::string("range0"),
    std::string("range1"),
    std::string("range2"),
    std::string("reduce_all_test_0"),
    std::string("reduce_all_test_1"),
    std::string("reduce_all_test_2"),
    std::string("reduce_all_test_3"),
    std::string("reduce_all_test_4"),
    std::string("reduce_all_test_5"),
    std::string("reduce_max_test_0"),
    std::string("reduce_max_test_1"),
    std::string("reduce_max_test_2"),
    std::string("reduce_max_test_3"),
    std::string("reduce_max_test_4"),
    std::string("reduce_max_test_5"),
    std::string("reduce_mean_test_0"),
    std::string("reduce_mean_test_1"),
    std::string("reduce_mean_test_2"),
    std::string("reduce_mean_test_3"),
    std::string("reduce_mean_test_4"),
    std::string("reduce_mean_test_5"),
    std::string("reduce_min_test_0"),
    std::string("reduce_min_test_1"),
    std::string("reduce_min_test_2"),
    std::string("reduce_min_test_3"),
    std::string("reduce_min_test_4"),
    std::string("reduce_min_test_5"),
    std::string("reduce_prod_test_0"),
    std::string("reduce_prod_test_1"),
    std::string("reduce_prod_test_2"),
    std::string("reduce_prod_test_3"),
    std::string("reduce_prod_test_4"),
    std::string("reduce_prod_test_5"),
    std::string("reduce_sum_test_0"),
    std::string("reduce_sum_test_1"),
    std::string("reduce_sum_test_2"),
    std::string("reduce_sum_test_3"),
    std::string("reduce_sum_test_4"),
    std::string("reduce_sum_test_5"),
    std::string("relu"),
    std::string("relu6"),
    std::string("relu6_1"),
    std::string("reshape"),
    std::string("reshape_tensor"),
    std::string("reshape_tensor_list"),
    std::string("rnn_lstm_layer_1_bidirectional/rnn_lstm_layer_1_bidirectional.pdmodel"),
    std::string("rnn_lstm_layer_1_forward/rnn_lstm_layer_1_forward.pdmodel"),
    std::string("rnn_lstm_layer_2_bidirectional/rnn_lstm_layer_2_bidirectional.pdmodel"),
    std::string("rnn_lstm_layer_2_forward/rnn_lstm_layer_2_forward.pdmodel"),
    std::string("rnn_lstm_layer_1_forward_seq_len_4/rnn_lstm_layer_1_forward_seq_len_4.pdmodel"),
    std::string("rnn_lstm_layer_2_bidirectional_seq_len_4/rnn_lstm_layer_2_bidirectional_seq_len_4.pdmodel"),
    std::string("roi_align_test"),
    std::string("roi_align_test2"),
    std::string("scale_bias_after_float32"),
    std::string("scale_bias_after_int32"),
    std::string("scale_bias_after_int64"),
    std::string("scale_bias_before_float32"),
    std::string("scale_bias_before_int32"),
    std::string("scale_bias_before_int64"),
    std::string("scale_tensor_bias_after"),
    std::string("scale_tensor_bias_before"),
    std::string("set_value1"),
    std::string("set_value2"),
    std::string("set_value3"),
    std::string("set_value4"),
    std::string("set_value5"),
    // std::string("set_value6"),
    // std::string("set_value7"),
    // std::string("set_value_dynamic1"),
    std::string("set_value_dynamic2"),
    std::string("shape"),
    std::string("share_data_test_0"),
    std::string("sigmoid"),
    std::string("silu_static_test1"),
    std::string("silu_static_test2"),
    std::string("silu_static_test3"),
    std::string("silu_static_test4"),
    std::string("silu_dynamic_test1"),
    std::string("silu_dynamic_test2"),
    std::string("silu_dynamic_test3"),
    std::string("silu_dynamic_test4"),
    std::string("sin"),
    std::string("slice"),
    std::string("slice_1d"),
    std::string("slice_decrease_axis/slice_decrease_axis.pdmodel"),
    std::string("slice_decrease_axis_all/slice_decrease_axis_all.pdmodel"),
    std::string("slice_reshape/slice_reshape.pdmodel"),
    std::string("softmax"),
    std::string("softmax_minus"),
    std::string("softplus_default_params"),
    std::string("softshrink_default_params"),
    std::string("softshrink_threshold_0.6"),
    std::string("split_test1"),
    std::string("split_test2"),
    std::string("split_test3"),
    std::string("split_test4"),
    std::string("split_test5"),
    std::string("split_test6"),
    std::string("split_test_dim_int32"),
    std::string("split_test_dim_int64"),
    std::string("split_test_list"),
    std::string("split_test_list_tensor"),
    std::string("sqrt_float32"),
    std::string("squeeze"),
    std::string("squeeze_null_axes"),
    std::string("stack_test_float32"),
    std::string("stack_test_int32"),
    std::string("stack_test_neg_axis"),
    std::string("stack_test_none_axis"),
    std::string("strided_slice_input1_1"),
    std::string("strided_slice_input1_2"),
    std::string("strided_slice_input1_3"),
    std::string("strided_slice_input1_4"),
    std::string("strided_slice_input2_1"),
    std::string("strided_slice_input2_2"),
    std::string("strided_slice_input2_3"),
    std::string("strided_slice_input3_1"),
    std::string("strided_slice_input3_2"),
    std::string("sum_1"),
    std::string("sum_2"),
    std::string("sum_3"),
    std::string("sum_4"),
    std::string("swish_default_params"),
    std::string("swish_beta"),
    std::string("tanh"),
    std::string("tanh_shrink_1"),
    std::string("tanh_shrink_2"),
    std::string("tile_repeat_times_tensor"),
    std::string("tile_list_float32"),
    std::string("tile_list_int32"),
    std::string("tile_list_int64"),
    std::string("tile_list_bool"),
    std::string("tile_tuple_float32"),
    std::string("tile_tuple_int32"),
    std::string("tile_tuple_int64"),
    std::string("tile_tuple_bool"),
    std::string("tile_tensor_list"),
    std::string("tile_repeat_gt_x"),
    std::string("tile_repeat_lt_x"),
    std::string("top_k_v2_test_1"),
    std::string("top_k_v2_test_2"),
    std::string("top_k_v2_test_3"),
    std::string("top_k_v2_test_4"),
    std::string("top_k_v2_test_5"),
    std::string("top_k_v2_test_6"),
    std::string("trilinear_downsample_false_0/trilinear_downsample_false_0.pdmodel"),
    std::string("trilinear_downsample_false_1/trilinear_downsample_false_1.pdmodel"),
    std::string("trilinear_downsample_true_0/trilinear_downsample_true_0.pdmodel"),
    std::string("trilinear_upsample_false_0/trilinear_upsample_false_0.pdmodel"),
    std::string("trilinear_upsample_false_1/trilinear_upsample_false_1.pdmodel"),
    std::string("trilinear_upsample_scales/trilinear_upsample_scales.pdmodel"),
    std::string("trilinear_upsample_scales2/trilinear_upsample_scales2.pdmodel"),
    std::string("trilinear_upsample_true_0/trilinear_upsample_true_0.pdmodel"),
    std::string("unsqueeze"),
    std::string("unique"),
    std::string("unique_ret_index"),
    std::string("unique_ret_inverse"),
    std::string("unique_ret_counts"),
    std::string("unique_ret_index_inverse"),
    std::string("unique_ret_index_counts"),
    std::string("unique_ret_inverse_counts"),
    std::string("unique_ret_index_inverse_counts"),
    std::string("unique_ret_index_axis"),
    std::string("unique_ret_index_i32"),
    std::string("unstack_1"),
    std::string("unstack_2"),
    std::string("unstack_3"),
    std::string("unstack_4"),
    std::string("unstack_5"),
    std::string("where_1"),
    std::string("where_2"),
    std::string("where_3"),
    std::string("where_index_1"),
    std::string("where_index_2"),
    std::string("where_index_3"),
    std::string("where_index_4"),
    std::string("where_index_5"),
    std::string("where_index_6"),
    // Temporily disable them until root caused to secure CI stable.
    // CVS-66703 to track this.
    // std::string("yolo_box_clip_box"),
    // std::string("yolo_box_default"),
    // std::string("yolo_box_scale_xy"),
    std::string("yolo_box_uneven_wh")};

INSTANTIATE_TEST_SUITE_P(PaddleFuzzyOpTest,
                         FrontEndFuzzyOpTest,
                         ::testing::Combine(::testing::Values(PADDLE_FE),
                                            ::testing::Values(std::string(TEST_PADDLE_MODELS_DIRNAME)),
                                            ::testing::ValuesIn(models)),
                         PaddleFuzzyOpTest::getTestCaseName);
